#pragma once

#include <iostream>
#include <string>
// 我们要在这里进行我们自己的协议定制!
// 网络版本的计算器

// 定制的请求 x_ op y_
class Request
{
public:
    Request()
    {}
    ~Request()
    {}
    // 序列化
    void serialize(std::string *out)
    {
    }

    // 反序列化
    void deserialize(const std::string &in)
    {
    }

    // encode, 整个序列化之后的字符串进行添加长度
    std::string encode(const std::string &in, uint32_t len)
    {
    }
    // decode，整个序列化之后的字符串进行提取长度
    std::string decode(const std::string &in, uint32_t *len)
    {
    }

private:
    // 需要计算的数据
    int x_; 
    int y_;
    // 需要进行的计算种类
    char op_; // + - * / %
};

// 定制的响应
class Response
{
public:
    Response()
    {}
    ~Response()
    {}
    // 序列化
    void serialize(std::string &out)
    {
    }
    // 反序列化
    void deserialize(std::string &in)
    {

    }
        // encode, 整个序列化之后的字符串进行添加长度
    std::string encode(const std::string &in, uint32_t len)
    {

    }
    // decode，整个序列化之后的字符串进行提取长度
    std::string decode(const std::string &in, uint32_t *len)
    {

    }
private:
    // 退出状态，0标识运算结果合法，非0标识运行结果是非法的，!0是几就表示是什么原因错了！
    int exitCode_;
    // 运算结果
    int result_;
};
